Dynamic Software Updating (DSU) is a feature of a software application that allows a new version of the software application to be brought into operation without stopping the execution of a previous version of the software application when enabled. DSU might be helpful for the maintenance and evolution of mission-critical and zero-downtime applications, because DSU allows a software application to be updated while the software application is executing. A software application in which the DSU feature is enabled allows the software application to evolve to accommodate new requirements that were not anticipated in the original design of the software application and also enables the fixing of bugs that are discovered after the software application is deployed.
A DSU system is used to enable DSU in a software application. A DSU system can be classified as restrictive or permissive. A restrictive system allows an update to occur only at a safe point. A permissive system allows updates at any execution point. A DSU system can also be classified as a lockstep system or a multiple-version system. A lockstep system disallows updates until all threads of the software application have finished executing an older version and have migrated to a newer version. A multiple-version system allows multiple versions of the same module to execute at the same time. DSU systems can also be classified as function level, module level, whole program level, single-threaded, and/or multi-threaded. Existing DSU systems, however, either do not retire older versions or require synchronization overhead to retire older versions.